Kaldi 之父在小米这一年
在中秋节前的一天晚上10点半,Dan在微博发了一张拍月亮的图片,配文“The moon is very clear tonight……”(今夜月分明)。
虽然身为英国人的Dan并不是像粉丝猜测的那样,在通过月色表达思乡情绪,纯粹是因为小米新发布了拍月亮的功能,他觉得很新颖很好玩,但这个时间Dan来中国确实已经接近一年。
在此之前,他曾经为了有一个好的开发Kaldi的环境,离开位于美国西海岸的家到巴尔的摩工作7年,这并不是他第一次为了Kaldi离家远行。
一、开源先驱
在Dan初到中国的时候,前金山CEO张宏江曾经向崔宝秋表示过对小米招揽Dan的赞赏,但与此同时,他也坦率的表达了自己的担忧:“要小心,他可能待不长。”
崔宝秋后来对左林右狸频道回应了这件事,他认为Dan是一个非常简单、非常善良的技术极客,他很有信心在小米帮他打造一个令人满意的工作环境,让他专心地做自己最喜欢的Kaldi研发工作。
Kaldi据说是一个埃塞俄比亚人的名字,他第一个发现了咖啡,因此被尊为咖啡之神,现在它是全世界最著名的开源语音识别工具包的名字,有趣的是,这个工具包的创造者Dan却是一个咖啡过敏者。
10年前,还在微软研究院参与计算机语音识别工作的Dan在约翰斯·霍普金斯大学主持了一次workshop,也是在这次会议上Dan启动了Kaldi项目,他找到了人生方向。
此时距离开源派的纳德拉上任还有5年时间,鲍尔默执掌的微软在对待开源的态度上始终暧昧不清,鲍尔默本人甚至还曾说过这样的话:微软三大敌分别是开源应用、谷歌、苹果,其中开源排在最前面。
Dan想要在微软做Kaldi这样一个开源项目显然会遇到阻碍,有传言认为微软并没有很支持他做这件事,以至于他最终离开。
2011年前后,Dan退出工业界,加入约翰斯·霍普金斯大学正式开启Kaldi项目,把自己的所有精力和热情都投入到Kaldi的开发中。
有人曾经问Dan的理想是什么,Dan的正常回答是降低词错率——这是一个多么技术男的回答。不过还有一种说法,Dan曾经在酒醉的时候说,要干掉Nuance。
Nuance在2016年之前一直是世界上最大的语音识别技术公司,三星的S-Voice、苹果的Siri无不仰赖其语音识别技术,其公司的傲慢作风也是众所周知,目前已因业绩不佳转型。
左林右狸频道最近也问了Dan类似的问题,“为什么一定要坚持做开源Kaldi?”
Dan的回复是,他不想让人们失望。现在有太多人依赖他正在做的开源项目,如果他不持之以恒做下去,大家会很失望。
Dan的说法一点没错,目前国内三大语音助手小爱同学、小度、天猫精灵使用的底层框架都是Kaldi。
一位资深从业者在Kaldi交流会上告诉左林右狸频道,无论是学界还是工业界,Kaldi都是最流行的开源语音识别工具。国内之所以随便哪家公司都能做出看起来还不错的语音识别产品,全仰赖Kaldi提供底层框架。
正因如此,在去年Dan在霍普金斯大学为了保护机房与抗议者发生冲突离职后,小米技术委员会主席崔宝秋才会不计代价将其争取过来。
尽管Dan对中国历史了解很多,但对中国话确实一片茫然,在他11月底正式入职之前,崔宝秋一边让人帮他找住所,一边又让身边人帮他物色优秀的翻译助理,这时候林珑来到了Dan的身边。
崔宝秋确实为Dan找到了一个非常有责任心的助理。
因为初到中国,Dan处处待人客气,以至于既使生活和工作中有些不便,但因为不好意思所以没有开口。林珑的工位在Dan办公室外面,她在日常中认真观察并主动询问,逐渐赢得了对方的信任。
在北京疫情严重的时候,Dan遇到了上门排查的街道人员,也会给林珑打去视频电话,寻求远程协助。有时候他出门买东西遇到语言障碍,也会视频找林珑帮忙。再后来,林珑教他如何使用外卖APP,不过他总是点成“门店自取”,曾经多次订单被取消。另外,滴滴也是他曾经学习尝试过的选项。
在林珑的帮助下,他越来越擅长在中国生活。
林珑后来告诉左林右狸频道,她和团队里很多人一样,都深受Dan极致工作态度的感染。
在入职小米不久的一次演讲空隙,Dan突然来了灵感,并告诉她自己有一个特别重要的代码要写,但是他的电脑没电了。林珑帮他找到插座后,又试图再去找个椅子过来,但当她把椅子搬过来的时候,却发现Dan已经趴在地上全神贯注的开始了自己的编程工作。
崔宝秋也曾说过“Dan就是雷总口中的那种,非常典型的不需要管理的员工,他在工作上有自驱力。”
事实上,Dan不但不需要驱动工作,反而需要人驱动休息。
在元旦的时候,崔宝秋为了让他更快了解中国,于是带他去参观故宫,甚至还请会英语的导游介绍文物。
但Dan却兴趣寥寥,按崔宝秋的原话说“这是我逛故宫逛的最快的一次”,一方面Dan认为钟表馆里,那些西方列强讨好慈禧送来的东西太丑了;另一方面他真的想要回去继续自己的编程工作。
到了清明前后,崔宝秋又带着Dan游了长城,这时他的Kaldi2.0有了进展,他兴致非常好,为此甚至没有穿他挚爱的拖鞋,而是换了一双爬山专用运动鞋。
崔宝秋开着车带他前往八达岭,路上一直避免聊工作,双方一边听美国国家公共电台的广播,一边聊疫情时事,二人都有亲人家小在美国,这是他们都很关心的话题。
到了长城以后,崔宝秋给他讲解了“不到长城非好汉”这句诗的来源,没想到Dan对毛主席的故事非常感兴趣。
但是他却不肯在“不到长城非好汉”几个字前面合影留念,原因是拍照需要排队,太耗时间,他希望自己的行程能更高效一点。
在Dan的眼里,崔宝秋是他在中国的朋友,也是亲人。
生日那天,崔宝秋送给Dan一台电钢琴。
Dan的父亲是乐队主唱,他本人是研究语音方面的科学家,他在对抗不公的推特中曾经引用诺贝尔文学奖得主摇滚乐手鲍勃·迪伦的歌词“我不对我做的任何事感到遗憾,我很高兴,我战斗了,我只希望我们胜利。”他对音乐也是由衷的热爱。
此后,Dan偶尔编程编嗨了就在办公室边弹琴边唱歌,这是他最喜欢的放松方式之一。
对崔宝秋而言,招揽Dan不是目的只是开始,他的真正目标是希望Kaldi能够在中国小米这片土壤上越长越大,成为国际开源界的一棵参天大树。当然,从公司价值来说,他也希望小米语音团队能够近水楼台先得月,跟着Dan学习成长,成为世界上最强的语音团队。
这年教师节,Dan作为小米博士后工作站导师收到了一盆竹子,这是中国人习惯用来形容君子气节的植物,他很喜欢。
二、极客典范
Quora上有人评价这次招聘是“小米捡漏”,现在复盘看来,小米能“捡漏”成功有这么几个关键原因:
其一是坚持拥抱开源,坚持在开源上投入,这也是能够说动Dan的最有效方式。小米在招聘Dan过程中介绍了小米多年来深度拥抱开源的工程文化和案例,满足了这个开源信仰者联合中国企业,将中国开源力量推向世界的想法,两者在技术愿景上不谋而合;
其二是小米AIoT生态,Povey 博士曾说“小米的 IoT 智能联网设备对外公布的数量是 1.96 亿台,光这个数字就有足够的说服力,生态有多么强大,这里面所有的东西都可以通过语音来控制。” 这也是Kaldi未来最能发挥作用的地方;
其三是对自研技术和人才的重视,一旦确定招聘目标,小米就志在必得,技术委主席崔宝秋本人出动,全程参与。
此处也给广大互联网巨头一个启发,如果要想抢到真正大牛人才,就不能全部指望HR,必须有足够有分量的人亲自下场。
2019年10月19日,Dan在Twitter上发布消息宣布自己将与小米签订工作协议,并将在北京招聘小团队打造新一代“PyTorch-y”Kaldi。不久之后,小米总裁也在微博发文证实了这个观点。
此处,我们解释下“PyTorch-y”Kaldi是何物,这是Kaldi2.0最初的优化方向,又被Dan团队称为Plan A。
虽然Kaldi有很多优点,但其使用的自有的深度学习框架却不如PyTorch和TensorFlow更加通用,初学者想要上手学习门槛较高。
在此之前的2017年,Kaldi社区里就有人表达过这样的观点:如果能够将TensorFlow作为一个模块集成到Kaldi中,对于Kaldi使用者来说门槛会大大降低,而对于TensorFlow的开发者来说,他们讲能够更轻松的访问ASR平台(基于Kaldi开发的可以在各种语言、口音、环境和对话类型中理解人类语言的系统),大大简化数据,甚至可以将开发周期从数月减少到数周。
不过那时候,Dan却不这么认为。
在2019年的小米开发者大会上,尽管他还没有正式入职,但因为小米的工程师们和Kaldi社区的众人都想一睹技术大神风采,于是崔宝秋便安排Dan作为压轴嘉宾出场。
演讲中,他坦言自己原来认为Kaldi系统本身足够优秀,不需要与TensorFlow和PyTorch结合,但是随着时间推移,现在他改变了看法。
他说:“如果用于基于服务器的、没有内存限制的识别,Kaldi 已经足够优秀了,不需要做其他改进。但如果用于基于设备的、有内存限制的识别,有时候使用(如 RNN-T)这类端到端的模型,以及 Tensorflow 工具包可能会比仅使用 Kaldi 更有成效。”
另外,Kaldi本身不支持整数化,所以很难在手机上实现产品化。
Plan A就是将TensorFlow和PyTorch作为两个模块融合进Kaldi,这样开发者们将可以利用TensorFlow和PyTorch更方便的搭载移动端。
事实上,Dan在入职小米之前就已经在思考这个方向,在离开约翰斯·霍普金斯大学后的半年里,Dan的谷歌学术主页更新了7篇论文,他和自己曾经的同事们共同提出了 PyChain,对于 Kaldi 自动语音识别工具包中链式模型的端到端无网格最大交互信息训练,PyChain 可以做到完全并行化 PyTorch 实现。
想要实现这个Kaldi 2.0计划,Dan需要更多的人力资源和资金支持,在小米的时间显然就是最好的机会。
不过,当崔宝秋问他是否需要更多人手的时候,他却给出了否定的回答,他告诉对方,目前开发瓶颈仍然在他本人。
他将Kaldi 2.0版本的发布时间从6月一直推迟到7月、8月、9月……中途甚至想换掉Kaldi这个名字。不过受到了崔宝秋的劝阻,Kaldi已经是个很响亮的品牌,如果丢了着实可惜。
陷入苦思冥想的Dan需要一次自我突破。
他对Plan A仍然不满意,尤其在真正着手开发的过程中,他意识到这样的方案不仅毫无创造力,而且会让Kaldi本身变得非常臃肿。
在加入小米后的很长时间里,他的团队里只有一位内部语音组转岗过来的程序员和一个翻译助理。
在Plan A之外有没有其他的方向?这是他必须要想清楚的问题。
三、赤子之心
浩文是Dan团队的第三位成员,在今年1月入职小米之前,他一直在微软亚洲研究院工作。
作为Kaldi社区的代码贡献者,他与Dan一直有技术方面的交流,在知道对方加入小米后,他向Dan提出了工作申请,经过面试,他很快也加入了小米。
浩文告诉左林右狸频道,他加入小米之后的主要工作就是跟Dan一起写代码开发Plan A,与此同时,他们也一直在讨论是否还有其他的优化方向。
在他的眼里,Dan是一个极其沉浸于工作思考的人。他们偶尔在一起吃饭,但很少说话,因为Dan总是边吃边写代码。
2012年左右,网上就已经有段子说Dan只需要吃颗土豆就可以工作14个小时。一位接近Dan的人曾经告诉左林右狸频道,Dan很享受编程的状态,他认为吃饭比较浪费时间。
如果说他在美国的生活是家和办公室两点一线,那么他在中国的生活几乎是无限趋近于一个点,那就是公司。
每周工作七天,每天从早10点一直工作到凌晨2点,白天用微信和人沟通,晚上用邮件,原因是担心吵醒对方。走到哪里永远带着电脑编程,别人劝他去休息一下或者在国内做个简短的旅行,他却觉得不过是换个城市编程,没有必要。
既使跟崔宝秋出去那两次,他也还是心念Kaldi,永远沉浸在编程世界。
与Dan相识多年的科技大V褚明宇曾评价他为,几十年不遇的真正的科学狂人,也是最厉害、最可爱的天才。这一点在Dan的微博上表现的比较明显。
除了他不管春夏秋冬、风霜雨雪、大会小会都爱穿凉鞋这件事,Dan经常发一些看起来充满童趣的想法。在他入职后没多久,他发现与同事合影时对方会故意将下巴修尖,他便在微博上发问“我不懂为什么女生要把脸弄成这个形状,又没有人想用它谈吉他”,下面是一张吉他拨片配图。
再有一次他发现崔宝秋穿了一件黑衬衫,他穿了一件白衬衫,他便让对方坐在沙发上自己站在旁边摆出凶凶的样子,然后发文说,“我注意到穿这件衬衫的时候我看起来像个大佬的手下,我想我会成为一个好帮手!”
今年疫情期间,他不得不在家办公,于是他又发了一张图片——他用透明塑料袋套住了头,配文“我已经做好出去的准备了”。
中国人将内心纯洁,不含杂念,对理想执着追求的人称为赤子,Dan就是这样的人。
普通人可能会很难理解,为什么他会如此沉醉于编程,他为什么会从编程这么枯燥的事中获得快乐,这里有件小事或许可以让我们一窥天才的内心。
Dan 14岁的一天晚上,他正在学习计算机科学的母亲向他讲解了BASIC编程语言。不久,他根据所学写出了人生中第一个程序——一个求解线性方程组的程序。他在母亲的带领下去计算机实验室验证了它,第一次运行就获得了成功。
那时候他还不知道世界上有软盘这件东西,所以他之后每次运行都需要重新编写,尽管如此他仍然非常兴奋,每一次运行都能让他感受到快乐。
在美剧《生活大爆炸》中,天才理论物理学家谢尔顿·库珀总是要坐在沙发最右边的位置,其背后原因在于,他非常享受“秩序井然”,而“恐惧无序”。
一个14岁的孩子能够从一遍遍输入程序、运行程序中得到的快乐也是如此。
从这个角度来看,让Kaldi变得臃肿繁复的PlanA确实不是他能最终接受的。
今年4月下旬,Dan终于找到了另一条思路。在今年年中的2020 CCF-GAIR大会上,左林右狸频道听过他的初步设想——一个用加权有限状态自动机进行深度学习,主要用于自动语音识别的框架。
在近期的MIDC开发者大会上,他才完全公布了这个新版本。
Kaldi被拆分为3个部分。
首先是k2,这也是新一代Kaldi的核心算法部分。
k2的愿景是能够将有限状态自动机(FSA,Finite State Acceptors)和有限状态换能器(FST)算法无缝集成到基于Autograd的机器学习工具包中,例如PyTorch和TensorFlow。
k2可以让开发者很容易在PyTorch/TensorFlow中实现各种语音识别相关算法,比如CTC、LF-MMI、RNN-T、2nd-pass语言模型等,消除以往语音识别算法中训练跟解码不匹配的问题。
FSA是语音识别里普遍使用的数据结构,比如可以用来构建“音标—词—句子”的转换概率图。k2让FSA可导,能够在PyTorch等深度学习库中来进行FSA的反向传播训练。
业内有评价认为,k2的可微FSA与前不久Facebook开源的gtn很相似,而k2因为支持GPU加速更胜一筹。
左林右狸频道这次见到Dan的时候,k2核心部分41000行代码经过7个月的开发已经完成。相比于其他语音识别库,k2速度更快(小米出品,跑分完胜),可以用来建模多种语音识别算法,通用性更强。
第二部分是Lhotse,这是训练数据集部分。
Lhotse是纯Python代码,更加方便易用,将替代以前Kaldi中所有数据准备相关的工作,操作各种音频和文本的元数据,目前这部分已发布了1.0版本。
第三部分是示例脚本集合Icefall。
Icefall将替代原来Kaldi中的示例脚本集合,成为一个单独的子项目。
浩文告诉左林右狸频道频道,他们已经跟内部产品团队有些合作,后续可能会落实到小米其他端设备上面。Icefall将会是一个长期项目,可能会变得非常庞大,且经常变动,不是一两年可以做完的。
Dan团队现在最需要的就是人才。
小米Kaldi团队部分成员
在Kaldi第五届线下交流会上,Dan做完发布后,主持人对在场的Kaldi社区成员(基本也都是Dan的技术粉)说:“大家可以提问,或者提出加入Dan的团队也没问题。”
在之前一天的MIDC大会上,雷军提出要了招募5000名工程师的目标,Kaldi社区这个人才库显然会成为重要来源。
四、开源中坚
国内互联网公司招募国际技术大牛,但是最后往往很难留住,这种案例并不少见,尤其是这种孤身一人在中国工作,既无亲朋,又无家小的状态。
左林右狸频道频道直接向Dan提出了这个问题,“你会在中国工作多久?”
Dan给出的回复是,目前没有其它想法,他要把自己想做的事做完,包括在小米把该结合的产品结合完。
对于全部精力都在编程上的Dan,Kaldi的未来显然是他更看重的事情。
今年8月,小米将“手机+AIoT”战略升级为“手机×AIoT”战略,这也意味着小爱同学被提到了更高的位置,她将不再是只是语音助手,还会覆盖智能生活的更多层面。
截止今年年中,小爱同学累计唤醒次数达 617 亿次,全球激活设备数 2.28 亿,小爱同学月活跃用户达到7840万。
如果说传统互联网时代的终端是PC,移动互联网时代的终端是手机,那未来物联网时代的终端很可能就是小爱同学这类智能生活助手。
从这个角度来看,作为语音算法底层框架的Kaldi仍然大有可为。
当左林右狸频道问Dan希望招募什么人加入团队时。
Dan先是搞怪的开玩笑说,他的朋友还是单身,希望找个单身的人来。之后才正经的告诉我们,他希望对方足够聪明与勤奋。
他曾经遇到过一个实习生,对方在用代码交换两个变量的值的时候,竟然用位交换法来避免产生临时变量。Dan便提醒对方用常规方法交换数字,不要使用小伎俩。
他在面试中会考察对方写的代码,会直接问一些关于编程的问题,最终也更青睐于能够以清晰明了编程风格完成项目的人。除此之外,他也很看重对方的团队协作能力。
在此之后,浩文则补充了新人的工作方向。目前Icefall部分是最需要人的,他们希望能够有更多懂得Python跟语音识别的人可以加入一起写脚本。
近年来,越来越多的世界顶尖科技工作者到中国工作,其背后的根本原因在于,一方面中国能够提供更加开放的创新环境,另一方面是中国科技企业取得的成就。
以Dan工作的小米为例,2016-2018年3年间,小米以684项AI领域专利申请排在全球第11位,超过高通、富士通等老牌技术驱动公司。拥有庞大用户基数和应用场景的中国市场给中国互联网企业带来了巨大优势,让它们在以人工智能为代表的新兴技术领域与发达国家的技术公司群体站到了同一条起跑线上。
科技的竞争说到底就是人才的竞争,未来谁能够吸引到足够优秀的人才,谁就能在竞争中取得优势。
虽然小米之前给了Dan每年回美国探亲的假期福利,但是因为疫情的影响,他已经一整年没有见过自己的妻子和女儿们了,只能偶尔通过视频沟通。他的大女儿因为已经上学,所以离不开美国,但是他的小女儿非常想来中国。
Dan告诉我们,他的小女儿会来中国上学,等疫情稍微缓解一些,拿到签证就可以入境了。
从参与开源代码编写到鼓吹开源文化,再到为小米制定开源战略吸引国际开源人才,崔宝秋已经成为国内开源运动的旗手。
他最懂Dan这位开源极客们需要什么,Dan也最能帮他平衡开源价值与企业价值。二者相知相依,共谱了一段中国开源力量走向世界的序曲。
欢迎各位邻里点击 阅读原文 到 左林右狸的知识星球讨论开扒更多行业八卦,同时也可 加入读者群 与我们讨论更多互联网江湖往事,添加 左林右狸小二妹微信:leiphonelinli(新朋友请备注 姓名+行业+所在地 或 发送名片)即可。
往期推荐
2020-11-25
2020-11-10
2020-11-09
欢迎扫码或点击“阅读原文”,加入知识星球,第一时间与林狸大叔畅聊更多的行业“八卦”~